﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using Model;


namespace Control
{
    public class MGPaginas : ModuloDeGerenciamento<Pagina>, IEditavel<Pagina>, IDuplicavel<Pagina>, INegociavel<Pagina, Site>
    {
        public MGPaginas()
        {
            this.dc = new Model.DataClassesDataContext();
        }

        public override List<Pagina> listar()
        {
            var pagina = from row in this.dc.Paginas select row;
            List<Pagina> list = new List<Pagina>();
            foreach (Pagina p in pagina)
            {
                list.Add(p);
            }
            return list;
        }

        public override bool adicionar(Pagina obj)
        {
            bool flag = true;
            try
            {
                this.dc.Paginas.InsertOnSubmit(obj);
                this.dc.SubmitChanges();
            }
            catch (Exception e)
            {

                this.output += "Erro ao inserir o registro";
                this.output += e.ToString();
                flag = false;
            }
            return flag;
        }

        public bool adicionar(
			string nome,
			string descricao,
			string palavrasChave,
			string autor,
			DateTime data,
			uint template
			)
        {
            if (string.IsNullOrEmpty(nome) || string.IsNullOrEmpty(descricao) || string.IsNullOrEmpty(palavrasChave) || string.IsNullOrEmpty(autor))
            {
                return false;
            }

            Pagina p = new Pagina();
            p.nome = nome;
            p.descricao = descricao;
            p.palavrasChave = palavrasChave;
            p.autor = autor;
            p.data = p.data;
            MGTemplates t = new MGTemplates();
            p.Template1 = t.get(template);
            return this.adicionar(p);
        }

        public override bool remover(Pagina obj)
        {
            var flag = false;
            try
            {
                this.dc.Paginas.DeleteOnSubmit(obj);
                this.dc.SubmitChanges();
            }
            catch (Exception e)
            {
                this.output += "Erro ao remover o registro";
                this.output += e.ToString();
                flag = true;
            }
            return flag;
        }

        public override Pagina get(uint id)
        {
            if (id == 0) return null;
            Pagina pagina = null;
            try
            {
                pagina = this.dc.Paginas.Single(p => p.id == id);
            }
            catch (Exception e)
            {

                this.output += "Erro ao remover o registro";
                this.output += e.ToString();
                pagina = null;
            }
            return pagina;
        }
        public override bool remover(uint id)
        {
            return this.remover(this.get(id));
        }


		public bool atualizar(Pagina obj) {
			throw new NotImplementedException();
		}

		public bool atualizar(uint id) {
			throw new NotImplementedException();
		}

        public bool atualizar(
			uint id,
			string nome,
			string descricao,
			string palavrasChave,
			string autor,
			DateTime data,
			uint template
		) {
			throw new NotImplementedException();
		}

		public Pagina duplicar(Pagina obj) {
			throw new NotImplementedException();
		}

		public Pagina duplicar(uint id) {
			throw new NotImplementedException();
		}

		public bool negociar(Pagina produto, Site exportador, Site importador) {
			throw new NotImplementedException();
		}

		public bool negociar(uint produto, uint exportador, uint importador) {
			throw new NotImplementedException();
		}
	}
}
